/**
 * @file: Mazo.h.
 * @author: Edwin Marcelo Guzman Buezo.
 * @date: MAY-18-2009.
 * @desc: Este archivo contiene la clase Mazo.
 */

#include <iostream>
#include <list>
#include <vector>

#include "Carta.h"

#ifndef _Mazo_h_
#define _Mazo_h_

using namespace std;

/**
 * La clase Mazo tiene un conjunto de _cartas.
 */

class Mazo{
public:

    /**
     * Constructor
     */
    Mazo();

    /**
     * Destructor
     */
    ~Mazo();

    /**
     * Retorna un objeto de la clase Carta al azar y la elimina de la lista.
     * @return carta al azar.
     */
    Carta* repartirNext();

    /**
     * Devuelve todas las cartas al mazo y las baraja.
     */
    void barajarCartas();

private:
    
    /**
     * Crear un mazo de cartas en _cartas.
     */
    void crearCartas();
    
private:
    
    /**
     * _cartasCreadas es un vector que tiene las cartas fisicas creadas.
     */
    vector<Carta*> _cartasCreadas;

    /**
     * _cartasEnMazo es un vector que tiene referencias las cartas a ser repartidas.
     */
    vector<Carta*> _cartasEnMazo;

};
#endif //_Mazo_h_
